package com.jy.wms.service;

import com.jy.wms.common.UUIDUtils;
import com.jy.wms.common.annotions.BaseServiceDescribe;
import com.jy.wms.common.base.BaseService;
import com.jy.wms.common.base.ServiceException;
import com.jy.wms.common.base.SucessException;
import com.jy.wms.pojo.WmsAsnEnclosure;
import com.jy.wms.dao.WmsAsnEnclosureMapper;
import org.springframework.stereotype.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

    /**
    * @ClassName: WmsAsnEnclosureService.java
    * @Description: TODO(这里用一句话描述这个类的作用)
    * @Author Liyi
    * @Date Mon Dec 18 15:49:15 CST 2017
    */

    @Service
    public class WmsAsnEnclosureService extends BaseService<WmsAsnEnclosureMapper,WmsAsnEnclosure> {

     /**
     * 插入一条记录
     * @param entity 实体对象
     * @return int
     */
    public Integer baseInsert( WmsAsnEnclosure entity){
         return dao.baseInsert( entity );
    }

   /**
    * 插入一条记录（匹配有值的字段）
    * @param entity 实体对象
    * @return int
    */
   @BaseServiceDescribe(moduleName = "预期到货通知单附件管理",btnName = "新增预期到货通知单附件")
    public void baseInsertSelective( WmsAsnEnclosure entity)throws ServiceException,SucessException{
       entity.setId(UUIDUtils.uuid());
       Integer count = dao.baseInsertSelective( entity);
       if(count > 0){
            throw new SucessException("新增预期到货通知单附件");
       }else{
           throw new ServiceException("新增预期到货通知单附件失败，未存入数据库");
       }
   }

   /**
    * 删除（根据主键ID删除）
    * @param id 主键
    * @return int
    */
    public Integer baseDeleteByPrimaryKey( String id){
         return dao.baseDeleteByPrimaryKey( id);
    }

   /**
    * 删除（根据ID 批量删除）
    * @param idList 主键ID列表
    * @return int
    */
   @BaseServiceDescribe(moduleName = "预期到货通知单附件管理",btnName = "批量删除预期到货通知单附件")
   @Transactional
    public void baseDeleteBathPrimaryKeys( List<String> idList)throws ServiceException,SucessException{
       Integer count = dao.baseDeleteBathPrimaryKeys( idList );
       if(count == idList.size()){
           throw new SucessException("删除预期到货通知单附件成功");
       }else{
           throw new ServiceException("删除预期到货通知单附件失败,未完全删除");
       }
   }

    /**
    * 分页查询
    * @param entity 实体
    * @return Page<WmsAsnEnclosure>
    */
    public Page<WmsAsnEnclosure> baseSelectPage(WmsAsnEnclosure entity ){
        PageHelper.startPage(entity.getPage(),entity.getRows());
        return (Page<WmsAsnEnclosure>)dao.baseSelectPage( entity );
    }

        /**
         * 根据asnId 查询对应的附件列表（不分页）
         * @param asnid
         * @return
         */
        @BaseServiceDescribe(moduleName = "预期到货通知单附件管理",btnName = "查询预期到货通知单附件列表")
    public List<WmsAsnEnclosure> getListByAsnid(String asnid)throws ServiceException{
        try {
            return dao.getListByAsnid(asnid);
        } catch (Exception e) {
            throw new ServiceException("查询预期到货通知单附件列表",e);
        }
    }
   /**
    * 查询（根据主键ID查询）
    * @param id 主键ID
    * @return WmsAsnEnclosure
    */
    public WmsAsnEnclosure baseSelectByPrimaryKey( String id ){
         return dao.baseSelectByPrimaryKey( id );
    }

   /**
    * 查询（根据ID 批量查询）
    * @param idList 主键ID列表
    * @return list
    */
    public Integer baseSelectBathPrimaryKeys( List<WmsAsnEnclosure> idList ){
         return dao.baseSelectBathPrimaryKeys( idList );
    }

   /**
    *修改 （匹配有值的字段）
    * @param entity 主键ID列表
    * @return int
    */
   @BaseServiceDescribe(moduleName = "预期到货通知单附件管理",btnName = "修改预期到货通知单附件")
    public void baseUpdateByPrimaryKeySelective( WmsAsnEnclosure entity)throws SucessException,ServiceException{
       Integer count = dao.baseUpdateByPrimaryKeySelective( entity);
       if(count>0){
           throw new SucessException("修改预期到货通知单附件成功");
       }else{
           throw new ServiceException("修改预期到货通知单附件失败，为存入数据库");
       }
   }

   /**
    *修改（根据主键ID修改）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKey( WmsAsnEnclosure entity){
         return dao.baseUpdateByPrimaryKey( entity);
    }
}
